package com.vepick.vue.intefaceSuperviseur;

import java.sql.Connection;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;

import com.vepick.beans.Classification;
import com.vepick.beans.Tache;
import com.vepick.metier.lancement.Connexion;
import com.vepick.metier.requetes.Requetes_classification;
import com.vepick.metier.requetes.Requetes_routines;
import com.vepick.metier.requetes.Requetes_station;
import com.vepick.metier.requetes.Requetes_tache;

public class IntefaceSuperviseur {

	public static final int CONSULTER_ROUTINES = 11;
	public static final int CONSULTER_TACHES_ROUTINE = 12;
	public static final int CREER_ROUTINE = 13;
	public static final int MODIFIER_ROUTINE = 14;

	public static final int CREER_TACHE = 21;
	public static final int MODIFIER_TACHE = 22;

	public static final int CONSULTER_STATION = 31;
	public static final int CONSULTER_STATION_VEHICULE = 32;

	public static final int CONSULTER_CLASSIF = 41;
	public static final int CREER_CLASSIF = 42;

	public static final int QUITTER_APPLICATION = 99;
	private static Scanner scanner;

	public static void ouvrirInterfaceSuperviseur() {
		scanner = new Scanner(System.in);
		int choix = 0;

		// Connection a la base de donnees
		try {
			Connection conn = Connexion.getConnexion();

			// Traitement du choix du client
			while (choix != QUITTER_APPLICATION) {

				// Affichage des differentes fonctionnalites
				afficherFonctionnalites();

				// Fonctionnalite tappee par le superviseur
				choix = scanner.nextInt();
				switch (choix) {
				case CONSULTER_ROUTINES:
					System.out
							.println("Entrer le numero du vehicule de la routine : ");
					int immatVehicRoutine = scanner.nextInt();
					Requetes_routines.afficherLesRoutinesParVehicule(conn,
							immatVehicRoutine);
					break;
				case CONSULTER_TACHES_ROUTINE:
					System.out
					.println("Entrer le numero de routine: ");
					Requetes_tache.afficherLesTachesDuneRoutine(conn, scanner.nextInt());
					break;

				case CREER_ROUTINE:
					System.out
							.print("Saisissez le vehicule en charge de la routine :");
					int immatVehic = scanner.nextInt();
					System.out.print("Saisissez la date de la routine :");
					scanner.nextLine();
					String dateRout = scanner.nextLine();

					Requetes_routines.enregistrerRoutine(conn, immatVehic,
							dateRout);

					break;

				case MODIFIER_ROUTINE:
					modifierRoutine(conn);
					break;

				case CREER_TACHE:
					try {
						creerTache(conn);
					} catch (Exception e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
					break;

				case MODIFIER_TACHE:
					
					break;

				case CONSULTER_STATION:
					Requetes_station.afficherLesStation2(conn);
					break;
					
				case CONSULTER_STATION_VEHICULE:
					System.out.println("Saisissez l'id de station :");
					Requetes_station.stationVehicules(conn, scanner.nextInt());
					break;
					

				case CONSULTER_CLASSIF:
					consulterClassif(conn);
					break;
				case CREER_CLASSIF:
					creerClassif(conn);
					break;

				case QUITTER_APPLICATION:
					try {
						conn.close();
						System.out.println("A bientot!");
						System.exit(0);
					} catch (SQLException e) {
						System.out
								.println("Erreur dans la fermeture de la connexion");
						System.exit(-1);
						e.printStackTrace();
					}
					break;
				default:
					break;

				}
			}

			Connexion.getConnexion().close();
		} catch (SQLException e) {
			System.out.println("Erreur dans la fermeture de la connexion");
			e.printStackTrace();

		}

	}

	private static void modifierRoutine(Connection conn) throws SQLException {
		System.out.println("Veuillez saisir un numero de vehicule :");
		int numVehicule = scanner.nextInt();
		Requetes_routines.afficherLesRoutinesParVehicule(conn, numVehicule);
		
		System.out.println("Veuillez saisir le numero de routine a modifier :");
		int numRout = scanner.nextInt();
		System.out.println("Saisissez le vehicule en charge de la routine :");
		int immatVehic = scanner.nextInt();
		System.out.println("Saisissez la date de la routine :");
		scanner.nextLine();
		String dateRout = scanner.nextLine();

		Requetes_routines.modifierRoutines(conn, numRout,immatVehic,dateRout);

	}

	private static void creerClassif(Connection conn) {
		// TODO Auto-generated method stub
		Classification classif = new Classification();
		System.out.print("Saisissez l'id de station: ");
		classif.setIdStation(scanner.nextInt());
		scanner.nextLine();

		System.out
				.print("Saisissez le type de la classification : Vplus/Vmoibs ");
		classif.setTypeClassif(scanner.nextLine());

		System.out.print("Saisissez la date de debut de la classification :");
		classif.setHeureDebutClassif(scanner.nextLine());

		System.out.print("Saisissez la date de fin de la classification :");
		classif.setHeureFinClassif(scanner.nextLine());

		Requetes_classification.enregistrerClassification(conn, classif);

	}

	private static void consulterClassif(Connection conn) throws SQLException {
		Requetes_classification.afficherLesClassifcations(conn);
		// TODO Auto-generated method stub

	}

	private static void creerTache(Connection conn) throws Exception {

		Tache tache = new Tache();

		// Choisir station
		Requetes_station.afficherLesStation2(conn);
		System.out.print("Saisissez l'id de station: ");
		tache.setIdStation(scanner.nextInt());

		// Choisir Routine
		Requetes_routines.afficherLesRoutines(conn);
		System.out.print("Saisissez l'id de routine: ");
		int idInt = scanner.nextInt();
		tache.setIdRoutines(idInt);

		// Saisissez seqTache
		Requetes_tache.afficherLesTachesDuneRoutine(conn, idInt);
		System.out.print("Saisissez la sequence de tache: ");
		tache.setSeqTache(scanner.nextDouble());

		// Choisir typetache
		System.out.print("Saisissez le type de tache(1 recuperer velo,2 deposer velo,3 verifier bornette): ");
		tache.setIdTypeTache(scanner.nextInt());

		// Saisissez nombrevelo
		System.out.print("Saisissez le nombre de vélo: ");
		tache.setNombrevelo(scanner.nextInt());

		// Saisissez commentaireTache
		System.out.print("Saisissez le commentaire: ");
		scanner.nextLine();
		tache.setCommentaireTache(scanner.nextLine());

		tache.setTacheAnnule(0);

		Requetes_tache.enregistrerTache(conn, tache);

	}

	private static void afficherFonctionnalites() {

		System.out.println("Consulter les routines : " + CONSULTER_ROUTINES);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		System.out.println("Consulter les taches d'une routine en ordre: "
				+ CONSULTER_TACHES_ROUTINE);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

		System.out.println("Creer une routine : " + CREER_ROUTINE);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		System.out.println("Modifier une routine : " + MODIFIER_ROUTINE);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

		System.out.println("Creer une tache : " + CREER_TACHE);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

		System.out.println("Consulter les classifications : "
				+ CONSULTER_CLASSIF);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		System.out.println("Creer une classification : " + CREER_CLASSIF);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

		System.out.println("Consulter l'etat des vélos des stations : "
				+ CONSULTER_STATION);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		System.out.println("Consulter les details de taches d'une station : "
				+ CONSULTER_STATION_VEHICULE);
		System.out
				.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
		
		
		System.out.println("Quitter l'application : " + QUITTER_APPLICATION);
	}

}
